import { createApp } from "vue";
import App from "./App.vue";

// 引入路由
import router from "./router";
// 引入unocss, 放置element-plus的css上方，否则会覆盖el-button的css（element-plus不需要重置样式）
// import "@unocss/reset/tailwind.css";
// 引入element plus
import ElementPlus from "element-plus";
// 引入element plus的css
import "element-plus/dist/index.css";
// 引入element plus的暗黑模式css
import "element-plus/theme-chalk/dark/css-vars.css";
// @ts-ignore忽略当前文件ts类型的检测否则有红色提示(打包会失败)
import zhCn from "element-plus/dist/locale/zh-cn.mjs";
// 引入ElementPlus所有图标
import * as ElementPlusIconsVue from "@element-plus/icons-vue";
// svg插件配置
import "virtual:svg-icons-register";
// 引入全局组件配置
import KoiComponent from "@/components/index.ts";
// 引入全局自定义指令
import KoiDirectives from "@/directives/index";
// 引入unocss
import "uno.css";
// 引入全局样式
import "@/styles/index.scss";
// 引入animate.css
import "animate.css";
// 引入进度条css
import "nprogress/nprogress.css";
// 引入仓库pinia
import pinia from "./store/index.ts";
// 导入pinia持久化插件
import piniaPluginPersistedstate from "pinia-plugin-persistedstate";

// 创建app
const app = createApp(App);
// 注册ElementPlus所有图标
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
  app.component(key, component);
}

// 注册路由
app.use(router);
// 注册pinia
app.use(pinia);
// 注册pinia持久化插件
pinia.use(piniaPluginPersistedstate);
// 注册ElementPlus
app.use(ElementPlus, {
  locale: zhCn,
});
// 注册自定义组件
app.use(KoiComponent);
// 注册全局自定义指令
app.use(KoiDirectives);
// 引入路由鉴权
import "@/router/permission.ts";
// 挂载
app.mount("#app");
